`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2022/03/16 20:32:07
// Design Name: 
// Module Name: NPC_Generator
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module NPC_Generator(
input logic Jal,
input logic Jalr,
input logic Branch,
input logic [31:0] JalT,
input logic [31:0] JalrT,
input logic [31:0] BrT,
input logic [31:0] PC,
output logic [31:0] NPC
    );

always_comb
begin
    if(Jalr)
        NPC=JalrT;
    else if(Branch)
        NPC=BrT;
    else if(Jal)               //Jal优先级低于Jalr和Branch，因为在五级流水线中，Jal更新地址发生在ID阶段，而后者发生在EXE阶段，同时检测到时，后两条指令时间上更早
        NPC=JalT;
    else
        NPC=PC+4;
end

endmodule
